Merge pull request #1720 from IanManske/inhibitor-default-state

This commit is contained in:
Alex 2022-10-17 09:06:26 +02:00 committed by GitHub
commit 5b0c5ea9ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 26 deletions

View File

@ -20,6 +20,7 @@ class IdleInhibitor : public ALabel {
private: private:
bool handleToggle(GdkEventButton* const& e); bool handleToggle(GdkEventButton* const& e);
void toggleStatus();
const Bar& bar_; const Bar& bar_;
struct zwp_idle_inhibitor_v1* idle_inhibitor_; struct zwp_idle_inhibitor_v1* idle_inhibitor_;

View File

@ -63,6 +63,11 @@ screensaving, also known as "presentation mode".
typeof: double ++ typeof: double ++
Threshold to be used when scrolling. Threshold to be used when scrolling.
*start-activated*: ++
typeof: bool ++
default: *false* ++
Whether the inhibit should be activated when starting waybar.
*timeout*: ++ *timeout*: ++
typeof: double ++ typeof: double ++
The number of minutes the inhibit should last. The number of minutes the inhibit should last.

View File

@ -16,6 +16,13 @@ waybar::modules::IdleInhibitor::IdleInhibitor(const std::string& id, const Bar&
throw std::runtime_error("idle-inhibit not available"); throw std::runtime_error("idle-inhibit not available");
} }
if (waybar::modules::IdleInhibitor::modules.empty()
&& config_["start-activated"].isBool()
&& config_["start-activated"].asBool() != status
) {
toggleStatus();
}
event_box_.add_events(Gdk::BUTTON_PRESS_MASK); event_box_.add_events(Gdk::BUTTON_PRESS_MASK);
event_box_.signal_button_press_event().connect( event_box_.signal_button_press_event().connect(
sigc::mem_fun(*this, &IdleInhibitor::handleToggle)); sigc::mem_fun(*this, &IdleInhibitor::handleToggle));
@ -78,8 +85,7 @@ auto waybar::modules::IdleInhibitor::update() -> void {
ALabel::update(); ALabel::update();
} }
bool waybar::modules::IdleInhibitor::handleToggle(GdkEventButton* const& e) { void waybar::modules::IdleInhibitor::toggleStatus() {
if (e->button == 1) {
status = !status; status = !status;
if (timeout_.connected()) { if (timeout_.connected()) {
@ -106,6 +112,11 @@ bool waybar::modules::IdleInhibitor::handleToggle(GdkEventButton* const& e) {
}, },
timeoutSecs); timeoutSecs);
} }
}
bool waybar::modules::IdleInhibitor::handleToggle(GdkEventButton* const& e) {
if (e->button == 1) {
toggleStatus();
// Make all other idle inhibitor modules update // Make all other idle inhibitor modules update
for (auto const& module : waybar::modules::IdleInhibitor::modules) { for (auto const& module : waybar::modules::IdleInhibitor::modules) {