Idempotent bar show/hide via configurable user kill signals
This commit is contained in:
@ -14,6 +14,7 @@
|
||||
|
||||
#include "AModule.hpp"
|
||||
#include "group.hpp"
|
||||
#include "util/kill_signal.hpp"
|
||||
#include "xdg-output-unstable-v1-client-protocol.h"
|
||||
|
||||
namespace waybar {
|
||||
@ -68,7 +69,11 @@ class Bar : public sigc::trackable {
|
||||
void setMode(const std::string &mode);
|
||||
void setVisible(bool value);
|
||||
void toggle();
|
||||
void show();
|
||||
void hide();
|
||||
void handleSignal(int);
|
||||
util::KillSignalAction getOnSigusr1Action();
|
||||
util::KillSignalAction getOnSigusr2Action();
|
||||
|
||||
struct waybar_output *output;
|
||||
Json::Value config;
|
||||
@ -118,6 +123,9 @@ class Bar : public sigc::trackable {
|
||||
std::unique_ptr<BarIpcClient> _ipc_client;
|
||||
#endif
|
||||
std::vector<std::shared_ptr<waybar::AModule>> modules_all_;
|
||||
|
||||
waybar::util::KillSignalAction onSigusr1;
|
||||
waybar::util::KillSignalAction onSigusr2;
|
||||
};
|
||||
|
||||
} // namespace waybar
|
||||
|
26
include/util/kill_signal.hpp
Normal file
26
include/util/kill_signal.hpp
Normal file
@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
|
||||
#include <json/value.h>
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace waybar::util {
|
||||
|
||||
enum class KillSignalAction : std::uint8_t {
|
||||
TOGGLE,
|
||||
RELOAD,
|
||||
SHOW,
|
||||
HIDE,
|
||||
NOOP,
|
||||
};
|
||||
const std::map<std::string, KillSignalAction> userKillSignalActions = {
|
||||
{"TOGGLE", KillSignalAction::TOGGLE},
|
||||
{"RELOAD", KillSignalAction::RELOAD},
|
||||
{"SHOW", KillSignalAction::SHOW},
|
||||
{"HIDE", KillSignalAction::HIDE},
|
||||
{"NOOP", KillSignalAction::NOOP}};
|
||||
|
||||
const KillSignalAction SIGNALACTION_DEFAULT_SIGUSR1 = KillSignalAction::TOGGLE;
|
||||
const KillSignalAction SIGNALACTION_DEFAULT_SIGUSR2 = KillSignalAction::RELOAD;
|
||||
|
||||
}; // namespace waybar::util
|
Reference in New Issue
Block a user