Show bar on sway mode
Display the bar if the sway mode is not the default mode.pull/1510/head
parent
93f9b3d213
commit
1dcd36b06c
|
@ -34,6 +34,7 @@ class BarIpcClient {
|
||||||
void onCmd(const struct Ipc::ipc_response&);
|
void onCmd(const struct Ipc::ipc_response&);
|
||||||
void onConfigUpdate(const swaybar_config& config);
|
void onConfigUpdate(const swaybar_config& config);
|
||||||
void onVisibilityUpdate(bool visible_by_modifier);
|
void onVisibilityUpdate(bool visible_by_modifier);
|
||||||
|
void onModeUpdate(bool visible_by_modifier);
|
||||||
void onUrgencyUpdate(bool visible_by_urgency);
|
void onUrgencyUpdate(bool visible_by_urgency);
|
||||||
void update();
|
void update();
|
||||||
|
|
||||||
|
@ -42,10 +43,12 @@ class BarIpcClient {
|
||||||
Ipc ipc_;
|
Ipc ipc_;
|
||||||
|
|
||||||
swaybar_config bar_config_;
|
swaybar_config bar_config_;
|
||||||
|
bool visible_by_mode_ = false;
|
||||||
bool visible_by_modifier_ = false;
|
bool visible_by_modifier_ = false;
|
||||||
bool visible_by_urgency_ = false;
|
bool visible_by_urgency_ = false;
|
||||||
std::atomic<bool> modifier_no_action_ = false;
|
std::atomic<bool> modifier_no_action_ = false;
|
||||||
|
|
||||||
|
SafeSignal<bool> signal_mode_;
|
||||||
SafeSignal<bool> signal_visible_;
|
SafeSignal<bool> signal_visible_;
|
||||||
SafeSignal<bool> signal_urgency_;
|
SafeSignal<bool> signal_urgency_;
|
||||||
SafeSignal<swaybar_config> signal_config_;
|
SafeSignal<swaybar_config> signal_config_;
|
||||||
|
|
|
@ -22,6 +22,7 @@ BarIpcClient::BarIpcClient(waybar::Bar& bar) : bar_{bar} {
|
||||||
signal_config_.connect(sigc::mem_fun(*this, &BarIpcClient::onConfigUpdate));
|
signal_config_.connect(sigc::mem_fun(*this, &BarIpcClient::onConfigUpdate));
|
||||||
signal_visible_.connect(sigc::mem_fun(*this, &BarIpcClient::onVisibilityUpdate));
|
signal_visible_.connect(sigc::mem_fun(*this, &BarIpcClient::onVisibilityUpdate));
|
||||||
signal_urgency_.connect(sigc::mem_fun(*this, &BarIpcClient::onUrgencyUpdate));
|
signal_urgency_.connect(sigc::mem_fun(*this, &BarIpcClient::onUrgencyUpdate));
|
||||||
|
signal_mode_.connect(sigc::mem_fun(*this, &BarIpcClient::onModeUpdate));
|
||||||
|
|
||||||
// Subscribe to non bar events to determine if the modifier key press is followed by another
|
// Subscribe to non bar events to determine if the modifier key press is followed by another
|
||||||
// action.
|
// action.
|
||||||
|
@ -85,6 +86,11 @@ void BarIpcClient::onIpcEvent(const struct Ipc::ipc_response& res) {
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case IPC_EVENT_MODE:
|
case IPC_EVENT_MODE:
|
||||||
|
if (payload.isMember("change")) {
|
||||||
|
signal_mode_(payload["change"] != "default");
|
||||||
|
modifier_no_action_ = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case IPC_EVENT_BINDING:
|
case IPC_EVENT_BINDING:
|
||||||
modifier_no_action_ = false;
|
modifier_no_action_ = false;
|
||||||
break;
|
break;
|
||||||
|
@ -137,6 +143,12 @@ void BarIpcClient::onConfigUpdate(const swaybar_config& config) {
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BarIpcClient::onModeUpdate(bool visible_by_mode) {
|
||||||
|
spdlog::debug("mode update for {}: {}", bar_.bar_id, visible_by_mode);
|
||||||
|
visible_by_mode_ = visible_by_mode;
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
void BarIpcClient::onVisibilityUpdate(bool visible_by_modifier) {
|
void BarIpcClient::onVisibilityUpdate(bool visible_by_modifier) {
|
||||||
spdlog::debug("visibility update for {}: {}", bar_.bar_id, visible_by_modifier);
|
spdlog::debug("visibility update for {}: {}", bar_.bar_id, visible_by_modifier);
|
||||||
visible_by_modifier_ = visible_by_modifier;
|
visible_by_modifier_ = visible_by_modifier;
|
||||||
|
@ -148,6 +160,7 @@ void BarIpcClient::onVisibilityUpdate(bool visible_by_modifier) {
|
||||||
// This signals an acknowledgment and should hide the bar again.
|
// This signals an acknowledgment and should hide the bar again.
|
||||||
// Hide the bar and clear the urgency flag.
|
// Hide the bar and clear the urgency flag.
|
||||||
visible_by_urgency_ = false;
|
visible_by_urgency_ = false;
|
||||||
|
visible_by_mode_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
update();
|
update();
|
||||||
|
@ -160,7 +173,7 @@ void BarIpcClient::onUrgencyUpdate(bool visible_by_urgency) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void BarIpcClient::update() {
|
void BarIpcClient::update() {
|
||||||
bool visible = visible_by_modifier_ || visible_by_urgency_;
|
bool visible = visible_by_modifier_ || visible_by_mode_ || visible_by_urgency_;
|
||||||
if (bar_config_.mode == "invisible") {
|
if (bar_config_.mode == "invisible") {
|
||||||
visible = false;
|
visible = false;
|
||||||
} else if (bar_config_.mode != "hide" || bar_config_.hidden_state != "hide") {
|
} else if (bar_config_.mode != "hide" || bar_config_.hidden_state != "hide") {
|
||||||
|
|
Loading…
Reference in New Issue