mirror of
				https://github.com/rad4day/Waybar.git
				synced 2025-11-04 01:32:42 +01:00 
			
		
		
		
	feat: cpu module
This commit is contained in:
		
							
								
								
									
										5
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								.vscode/settings.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					{
 | 
				
			||||||
 | 
					    "files.associations": {
 | 
				
			||||||
 | 
					        "atomic": "cpp"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										20
									
								
								include/modules/cpu.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								include/modules/cpu.hpp
									
									
									
									
									
										Normal 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;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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
									
								
							
							
						
						
									
										20
									
								
								src/modules/cpu.cpp
									
									
									
									
									
										Normal 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;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user