feat(network): network info interval
This commit is contained in:
parent
c910767378
commit
e42fae32ab
|
@ -34,7 +34,7 @@ class Battery : public ALabel {
|
||||||
std::string getState(uint16_t);
|
std::string getState(uint16_t);
|
||||||
|
|
||||||
util::SleeperThread thread_;
|
util::SleeperThread thread_;
|
||||||
util::SleeperThread threadTimer_;
|
util::SleeperThread thread_timer_;
|
||||||
std::vector<fs::path> batteries_;
|
std::vector<fs::path> batteries_;
|
||||||
int fd_;
|
int fd_;
|
||||||
std::string old_status_;
|
std::string old_status_;
|
||||||
|
|
|
@ -23,6 +23,7 @@ class Network : public ALabel {
|
||||||
static int netlinkResponse(int, void*, uint32_t, uint32_t groups = 0);
|
static int netlinkResponse(int, void*, uint32_t, uint32_t groups = 0);
|
||||||
static int scanCb(struct nl_msg*, void*);
|
static int scanCb(struct nl_msg*, void*);
|
||||||
|
|
||||||
|
void worker();
|
||||||
void disconnected();
|
void disconnected();
|
||||||
void initNL80211();
|
void initNL80211();
|
||||||
int getExternalInterface();
|
int getExternalInterface();
|
||||||
|
@ -33,10 +34,11 @@ class Network : public ALabel {
|
||||||
auto getInfo() -> void;
|
auto getInfo() -> void;
|
||||||
|
|
||||||
waybar::util::SleeperThread thread_;
|
waybar::util::SleeperThread thread_;
|
||||||
|
waybar::util::SleeperThread thread_timer_;
|
||||||
int ifid_;
|
int ifid_;
|
||||||
sa_family_t family_;
|
sa_family_t family_;
|
||||||
int sock_fd_;
|
int sock_fd_;
|
||||||
struct sockaddr_nl nladdr_ = {};
|
struct sockaddr_nl nladdr_ = {0};
|
||||||
struct nl_sock* sk_ = nullptr;
|
struct nl_sock* sk_ = nullptr;
|
||||||
int nl80211_id_;
|
int nl80211_id_;
|
||||||
|
|
||||||
|
|
|
@ -90,6 +90,10 @@ void waybar::Client::bindInterfaces()
|
||||||
};
|
};
|
||||||
wl_registry_add_listener(registry, ®istry_listener, this);
|
wl_registry_add_listener(registry, ®istry_listener, this);
|
||||||
wl_display_roundtrip(wl_display);
|
wl_display_roundtrip(wl_display);
|
||||||
|
if (!layer_shell || !seat || !xdg_output_manager) {
|
||||||
|
throw std::runtime_error("Failed to acquire required resources.");
|
||||||
|
}
|
||||||
|
wl_display_roundtrip(wl_display);
|
||||||
}
|
}
|
||||||
|
|
||||||
int waybar::Client::main(int /*argc*/, char* /*argv*/[])
|
int waybar::Client::main(int /*argc*/, char* /*argv*/[])
|
||||||
|
|
|
@ -47,7 +47,7 @@ void waybar::modules::Battery::worker()
|
||||||
// Trigger first values
|
// Trigger first values
|
||||||
update();
|
update();
|
||||||
uint32_t interval = config_["interval"].isUInt() ? config_["interval"].asUInt() : 60;
|
uint32_t interval = config_["interval"].isUInt() ? config_["interval"].asUInt() : 60;
|
||||||
threadTimer_ = [this, interval] {
|
thread_timer_ = [this, interval] {
|
||||||
thread_.sleep_for(chrono::seconds(interval));
|
thread_.sleep_for(chrono::seconds(interval));
|
||||||
dp.emit();
|
dp.emit();
|
||||||
};
|
};
|
||||||
|
@ -58,7 +58,7 @@ void waybar::modules::Battery::worker()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// TODO: don't stop timer for now since there is some bugs :?
|
// TODO: don't stop timer for now since there is some bugs :?
|
||||||
// threadTimer_.stop();
|
// thread_timer_.stop();
|
||||||
dp.emit();
|
dp.emit();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ waybar::modules::Cpu::Cpu(const Json::Value& config)
|
||||||
auto waybar::modules::Cpu::update() -> void
|
auto waybar::modules::Cpu::update() -> void
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
// TODO: as creating dynamic fmt::arg arrays is buggy we have to do this
|
// TODO: as creating dynamic fmt::arg arrays is buggy we have to calc both
|
||||||
auto cpu_load = getCpuLoad();
|
auto cpu_load = getCpuLoad();
|
||||||
auto [cpu_usage, tooltip] = getCpuUsage();
|
auto [cpu_usage, tooltip] = getCpuUsage();
|
||||||
label_.set_tooltip_text(tooltip);
|
label_.set_tooltip_text(tooltip);
|
||||||
|
|
|
@ -34,6 +34,17 @@ waybar::modules::Network::Network(const Json::Value& config)
|
||||||
// Trigger first values
|
// Trigger first values
|
||||||
getInfo();
|
getInfo();
|
||||||
update();
|
update();
|
||||||
|
worker();
|
||||||
|
}
|
||||||
|
|
||||||
|
waybar::modules::Network::~Network()
|
||||||
|
{
|
||||||
|
close(sock_fd_);
|
||||||
|
nl_socket_free(sk_);
|
||||||
|
}
|
||||||
|
|
||||||
|
void waybar::modules::Network::worker()
|
||||||
|
{
|
||||||
thread_ = [this] {
|
thread_ = [this] {
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
uint64_t len = netlinkResponse(sock_fd_, buf, sizeof(buf),
|
uint64_t len = netlinkResponse(sock_fd_, buf, sizeof(buf),
|
||||||
|
@ -74,12 +85,14 @@ waybar::modules::Network::Network(const Json::Value& config)
|
||||||
dp.emit();
|
dp.emit();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
uint32_t interval = config_["interval"].isUInt() ? config_["interval"].asUInt() : 60;
|
||||||
|
thread_timer_ = [this, interval] {
|
||||||
waybar::modules::Network::~Network()
|
thread_.sleep_for(std::chrono::seconds(interval));
|
||||||
{
|
if (ifid_ > 0) {
|
||||||
close(sock_fd_);
|
getInfo();
|
||||||
nl_socket_free(sk_);
|
dp.emit();
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
auto waybar::modules::Network::update() -> void
|
auto waybar::modules::Network::update() -> void
|
||||||
|
|
Loading…
Reference in New Issue