feat(workspaces): add a option to show all workspaces from all outputs

pull/25/head
Alexis 2018-08-15 22:19:17 +02:00
parent 3ed3416d75
commit a9246a09eb
3 changed files with 11 additions and 8 deletions

View File

@ -9,6 +9,7 @@
"modules-right": ["pulseaudio", "network", "cpu", "memory", "battery", "clock"], "modules-right": ["pulseaudio", "network", "cpu", "memory", "battery", "clock"],
// Modules configuration // Modules configuration
"sway/workspaces": { "sway/workspaces": {
// "all-outputs": true,
"format-icons": { "format-icons": {
"1": "", "1": "",
"2": "", "2": "",

View File

@ -37,14 +37,14 @@ auto waybar::modules::Battery::update() -> void
{ {
try { try {
uint16_t total = 0; uint16_t total = 0;
bool charging = false;
std::string status; std::string status;
for (auto &bat : _batteries) { for (auto &bat : _batteries) {
uint16_t capacity; uint16_t capacity;
std::string _status;
std::ifstream(bat / "capacity") >> capacity; std::ifstream(bat / "capacity") >> capacity;
std::ifstream(bat / "status") >> status; std::ifstream(bat / "status") >> _status;
if (status == "Charging") if (_status != "Unknown")
charging = true; status = _status;
total += capacity; total += capacity;
} }
uint16_t capacity = total / _batteries.size(); uint16_t capacity = total / _batteries.size();
@ -53,6 +53,7 @@ auto waybar::modules::Battery::update() -> void
_label.set_text(fmt::format(format, fmt::arg("capacity", capacity), _label.set_text(fmt::format(format, fmt::arg("capacity", capacity),
fmt::arg("icon", _getIcon(capacity)))); fmt::arg("icon", _getIcon(capacity))));
_label.set_tooltip_text(status); _label.set_tooltip_text(status);
bool charging = status == "Charging";
if (charging) if (charging)
_label.get_style_context()->add_class("charging"); _label.get_style_context()->add_class("charging");
else else

View File

@ -13,11 +13,11 @@ waybar::modules::sway::Workspaces::Workspaces(Bar &bar, Json::Value config)
ipc_single_command(_ipcEventfd, IPC_SUBSCRIBE, subscribe, &len); ipc_single_command(_ipcEventfd, IPC_SUBSCRIBE, subscribe, &len);
_thread = [this] { _thread = [this] {
try { try {
if (_bar.outputName.empty()) { // Wait for the name of the output
// Wait for the name of the output if (!_config["all-outputs"].asBool() && _bar.outputName.empty()) {
while (_bar.outputName.empty()) while (_bar.outputName.empty())
_thread.sleep_for(chrono::milliseconds(150)); _thread.sleep_for(chrono::milliseconds(150));
} else } else if (_workspaces.size())
ipc_recv_response(_ipcEventfd); ipc_recv_response(_ipcEventfd);
uint32_t len = 0; uint32_t len = 0;
std::lock_guard<std::mutex> lock(_mutex); std::lock_guard<std::mutex> lock(_mutex);
@ -45,7 +45,8 @@ auto waybar::modules::sway::Workspaces::update() -> void
++it; ++it;
} }
for (auto node : _workspaces) { for (auto node : _workspaces) {
if (_bar.outputName != node["output"].asString()) if (!_config["all-outputs"].asBool()
&& _bar.outputName != node["output"].asString())
continue; continue;
auto it = _buttons.find(node["num"].asInt()); auto it = _buttons.find(node["num"].asInt());
if (it == _buttons.end()) { if (it == _buttons.end()) {