feat: cpu module

This commit is contained in:
Alexis 2018-08-09 01:54:33 +02:00
parent 17fc77cb5e
commit d5bfc754c6
5 changed files with 58 additions and 11 deletions

5
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,5 @@
{
"files.associations": {
"atomic": "cpp"
}
}

20
include/modules/cpu.hpp Normal file
View File

@ -0,0 +1,20 @@
#pragma once
#include <gtkmm.h>
#include <fmt/format.h>
#include <sys/sysinfo.h>
#include <thread>
#include "util/chrono.hpp"
namespace waybar::modules {
class Cpu {
public:
Cpu();
operator Gtk::Widget &();
private:
Gtk::Label _label;
waybar::util::SleeperThread _thread;
};
}

View File

@ -11,11 +11,6 @@ window {
color: white; color: white;
} }
.focused-window-title {
padding: 0px 10px;
min-height: 0px;
}
.workspace-selector button { .workspace-selector button {
padding: 0 5px; padding: 0 5px;
background: transparent; background: transparent;
@ -28,15 +23,16 @@ window {
border-bottom: 3px solid white; border-bottom: 3px solid white;
} }
.clock-widget { .clock-widget, .battery-status, .cpu-widget, .memory-widget {
background-color: #64727D;
padding: 0 10px; padding: 0 10px;
margin: 0 5px; margin: 0 5px;
} }
.clock-widget {
background-color: #64727D;
}
.battery-status { .battery-status {
padding: 0 10px;
margin: 0 5px;
background-color: #ffffff; background-color: #ffffff;
color: black; color: black;
} }
@ -46,8 +42,11 @@ window {
background-color: #26A65B; background-color: #26A65B;
} }
.cpu-widget {
background: #2ecc71;
color: #000000;
}
.memory-widget { .memory-widget {
padding: 0 10px;
margin: 0 5px;
background: #9b59b6; background: #9b59b6;
} }

View File

@ -8,6 +8,7 @@
#include "modules/workspaces.hpp" #include "modules/workspaces.hpp"
#include "modules/battery.hpp" #include "modules/battery.hpp"
#include "modules/memory.hpp" #include "modules/memory.hpp"
#include "modules/cpu.hpp"
static void handle_geometry(void *data, struct wl_output *wl_output, int32_t x, static void handle_geometry(void *data, struct wl_output *wl_output, int32_t x,
int32_t y, int32_t physical_width, int32_t physical_height, int32_t subpixel, int32_t y, int32_t physical_width, int32_t physical_height, int32_t subpixel,
@ -149,10 +150,12 @@ auto waybar::Bar::setup_widgets() -> void
auto &workspace_selector = *new waybar::modules::WorkspaceSelector(*this); auto &workspace_selector = *new waybar::modules::WorkspaceSelector(*this);
auto &battery = *new waybar::modules::Battery(); auto &battery = *new waybar::modules::Battery();
auto &memory = *new waybar::modules::Memory(); auto &memory = *new waybar::modules::Memory();
auto &cpu = *new waybar::modules::Cpu();
left.pack_start(workspace_selector, false, true, 0); left.pack_start(workspace_selector, false, true, 0);
// center.pack_start(workspace_selector, true, false, 10); // center.pack_start(workspace_selector, true, false, 10);
right.pack_end(clock, false, false, 0); right.pack_end(clock, false, false, 0);
right.pack_end(battery, false, false, 0); right.pack_end(battery, false, false, 0);
right.pack_end(memory, false, false, 0); right.pack_end(memory, false, false, 0);
right.pack_end(cpu, false, false, 0);
} }

20
src/modules/cpu.cpp Normal file
View File

@ -0,0 +1,20 @@
#include "modules/cpu.hpp"
#include <iostream>
waybar::modules::Cpu::Cpu()
{
_label.get_style_context()->add_class("cpu-widget");
_thread = [this] {
struct sysinfo info;
if (!sysinfo(&info)) {
float f_load = 1.f / (1 << SI_LOAD_SHIFT);
_label.set_text(fmt::format("{:.{}f}% ",
info.loads[0] * f_load * 100 / get_nprocs(), 1));
}
_thread.sleep_for(chrono::seconds(30));
};
};
waybar::modules::Cpu::operator Gtk::Widget &() {
return _label;
}