Make cpu block normal

master
Rasmus Rosengren 3 years ago
parent 2fcd267b6c
commit fcc127d818
Signed by: rsrp
GPG Key ID: A13BC7BC4F81CF5F
  1. 42
      src/blocks/cpu.rs
  2. 12
      src/blocks/mod.rs
  3. 2
      src/main.rs

@ -1,13 +1,8 @@
use std::sync::{atomic::AtomicBool, Arc};
use systemstat::Platform;
use crate::{
blocks::{BlockInfo, Color},
Block,
};
use crate::{blocks::BlockInfo, Block};
use super::{BlockEvent, BlockPartName, BlockUpdate};
use super::{BlockEvent, BlockUpdate};
pub struct CpuBlock {
pub id: usize,
@ -23,41 +18,16 @@ impl Block for CpuBlock {
}
fn run(&mut self, _event_r: flume::Receiver<BlockEvent>, update_s: flume::Sender<BlockUpdate>) {
let on = Arc::new(AtomicBool::new(false));
{
let on = on.clone();
std::thread::spawn(move || loop {
let event = _event_r.recv().unwrap();
if let BlockPartName::Named(name) = event.part_name {
if name == "icon" {
let on_value = on.load(std::sync::atomic::Ordering::Relaxed);
on.store(!on_value, std::sync::atomic::Ordering::Relaxed);
}
}
});
}
let sys = systemstat::System::new();
loop {
let cpu = sys.cpu_load_aggregate().unwrap();
std::thread::sleep(std::time::Duration::from_millis(1000));
let cpu = cpu.done().unwrap();
let load_percentage = 100.0 * cpu.user;
let fg_color = if on.load(std::sync::atomic::Ordering::Relaxed) {
Color::Rgb(0, 255, 0)
} else {
Color::Rgb(0, 0, 255)
};
let update = BlockUpdate::Multi(vec![
BlockInfo::from_unnamed(String::from(" ")).build(),
BlockInfo::from_named(String::from("icon"), String::from("\u{f3fd}"))
.fg_color(fg_color)
.bg_color(Color::Rgb(255, 255, 0))
.build(),
BlockInfo::from_unnamed(format!("{:>5.2}% ", load_percentage))
.fg_color(Color::Rgb(0, 255, 0))
.build(),
]);
let update = BlockUpdate::Single(
BlockInfo::from_unnamed(format!(" \u{f3fd}{:>5.2}% ", load_percentage)).build(),
);
update_s.send(update).unwrap();
}
}

@ -19,7 +19,7 @@ pub trait Block {
#[derive(Clone, Debug)]
pub enum BlockUpdate {
Single(BlockInfo),
Multi(Vec<BlockInfo>),
_Multi(Vec<BlockInfo>),
_Disabled,
}
@ -40,7 +40,7 @@ impl BlockInfo {
BlockInfoBuilder::new(full_text, BlockPartName::Main)
}
pub fn from_named(name: String, full_text: String) -> BlockInfoBuilder {
pub fn _from_named(name: String, full_text: String) -> BlockInfoBuilder {
BlockInfoBuilder::new(full_text, BlockPartName::Named(name))
}
@ -69,12 +69,12 @@ impl BlockInfoBuilder {
self
}
pub fn fg_color(mut self, fg_color: Color) -> Self {
pub fn _fg_color(mut self, fg_color: Color) -> Self {
self.inner.fg_color = fg_color;
self
}
pub fn bg_color(mut self, bg_color: Color) -> Self {
pub fn _bg_color(mut self, bg_color: Color) -> Self {
self.inner.bg_color = bg_color;
self
}
@ -153,7 +153,7 @@ pub struct BlockBorder {
#[derive(Clone, Copy, Debug)]
pub enum Color {
Default,
Rgb(u8, u8, u8),
_Rgb(u8, u8, u8),
_Rgba(u8, u8, u8, u8),
}
@ -161,7 +161,7 @@ impl Color {
pub fn to_hex(self) -> Option<String> {
match self {
Color::Default => None,
Color::Rgb(r, g, b) => Some(format!("#{:02x}{:02x}{:02x}", r, g, b)),
Color::_Rgb(r, g, b) => Some(format!("#{:02x}{:02x}{:02x}", r, g, b)),
Color::_Rgba(r, g, b, a) => Some(format!("#{:02x}{:02x}{:02x}{:02x}", r, g, b, a)),
}
}

@ -104,7 +104,7 @@ fn main() {
};
rendered_blocks.push(rendered_block);
}
BlockUpdate::Multi(blocks) => {
BlockUpdate::_Multi(blocks) => {
let blocks_len = blocks.len();
for (i, block) in blocks.iter().enumerate() {
if let BlockPartName::Main = block.part_name {

Loading…
Cancel
Save