polybar-dwm/include/modules/ipc.hpp
Michael Carlberg e3065d0e6c feat(ipc): New ipc module
Add a new module that allow users to configure hooks
on received ipc messages. The hook will execute the defined
shell script and the output of the script will be used
as the module content.

Ref #84
2016-11-14 09:26:40 +01:00

45 lines
935 B
C++

#pragma once
#include "modules/meta.hpp"
#include "utils/command.hpp"
LEMONBUDDY_NS
struct ipc_hook; // fwd
namespace modules {
/**
* Hook structure that will be fired
* when receiving a message with specified id
*/
struct hook {
string payload;
string command;
};
/**
* Module that allow users to configure hooks on
* received ipc messages. The hook will execute the defined
* shell script and the resulting output will be used
* as the module content.
*/
class ipc_module : public static_module<ipc_module> {
public:
using static_module::static_module;
void setup();
string get_output();
bool build(builder* builder, string tag) const;
void on_message(const ipc_hook& msg);
private:
static constexpr auto TAG_OUTPUT = "<output>";
vector<unique_ptr<hook>> m_hooks;
string m_output;
map<mousebtn, string> m_actions;
};
}
LEMONBUDDY_NS_END