Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions docs/modules/Sys-Info.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,12 @@ More information about each of these and the additional options can be found fur
| `{swap_used}` | N/A | GB | `0<4.1` |
| `{swap_total}` | N/A | GB | `0<4.1` |
| `{swap_percent}` | N/A | GB | `0<4.1` |
| **GPU** | | | |
| `{gpu_percent}` | N/A | % | `0<2` |
| `{gpu_memory_free}` | N/A | GB | `0<4.1` |
| `{gpu_memory_total}` | N/A | GB | `0<4.1` |
| `{gpu_memory_used}` | N/A | GB | `0<4.1` |
| `{gpu_memory_percent}` | N/A | % | `0<2` |
| **Temperature** | | | |
| `{temp_c[@sensor]}` | `max` | °C | |
| `{temp_f[@sensor]}` | `max` | °F | |
Expand Down Expand Up @@ -196,6 +202,7 @@ It is also possible to get only a single value from the set by specifying a name
| Token category | Valid name |
|----------------|------------------------------------------|
| CPU | A CPU thread, eg `cpu0`, `cpu1`, ... |
| GPU | A PCI bus address, eg `0000:07:00.0` |
| Temperature | A sensor name, eg `CPUTIN`. |
| Disk | A disk mountpoint, eg `/`, `/home`, ... |
| Network | An adapter name, eg `eth0` or `enp30s0`. |
Expand Down Expand Up @@ -357,6 +364,7 @@ Possible types:

- `Memory`
- `Cpu`
- `Gpu`
- `Temps`
- `Disks`
- `Network`
Expand Down
56 changes: 31 additions & 25 deletions src/clients/libinput/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -298,36 +298,42 @@ impl super::Client for Client {
let tx = channel.clone();
let known_devices = known_devices.clone();

std::thread::spawn(move || {
let local = LocalSet::new();

local.spawn_local(async move {
let stream = match Self::connect(&seat) {
Ok(stream) => {
ready_tx.send(Ok(())).expect(crate::error::ERR_CHANNEL_SEND);
stream
}
Err(err) => {
ready_tx
.send(Err(err))
.expect(crate::error::ERR_CHANNEL_SEND);
return;
}
};
let thread = std::thread::Builder::new()
.name("ironbar-libinput".to_string())
.spawn(move || {
let local = LocalSet::new();

local.spawn_local(async move {
let stream = match Self::connect(&seat) {
Ok(stream) => {
ready_tx.send(Ok(())).expect(crate::error::ERR_CHANNEL_SEND);
stream
}
Err(err) => {
ready_tx
.send(Err(err))
.expect(crate::error::ERR_CHANNEL_SEND);
return;
}
};

tokio::select! {
res = Self::run(stream, &tx, &known_devices) => {
if let Err(err) = res {
error!("{err:?}");
tokio::select! {
res = Self::run(stream, &tx, &known_devices) => {
if let Err(err) = res {
error!("{err:?}");
}
}
// resolves on explicit stop, or when the client is dropped
_ = stop_rx => debug!("stopping libinput client for seat '{seat}'"),
}
// resolves on explicit stop, or when the client is dropped
_ = stop_rx => debug!("stopping libinput client for seat '{seat}'"),
}
});

Ironbar::runtime().block_on(local);
});

Ironbar::runtime().block_on(local);
});
if let Err(err) = thread {
error!("{err:?}");
}
}

ready_rx.await.map_err(|_| Error::ThreadExited)??;
Expand Down
30 changes: 30 additions & 0 deletions src/clients/sysinfo/ironvar.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,41 @@ impl Namespace for Client {
match token {
TokenType::CpuFrequency => None,
TokenType::CpuPercent => None,

TokenType::MemoryFree => get(data.memory_free()),
TokenType::MemoryAvailable => get(data.memory_available()),
TokenType::MemoryTotal => get(data.memory_total()),
TokenType::MemoryUsed => get(data.memory_used()),
TokenType::MemoryPercent => get(data.memory_percent()),

TokenType::SwapFree => get(data.swap_free()),
TokenType::SwapTotal => get(data.swap_total()),
TokenType::SwapUsed => get(data.swap_used()),
TokenType::SwapPercent => get(data.swap_percent()),

TokenType::GpuPercent => None,
TokenType::GpuMemoryFree => None,
TokenType::GpuMemoryTotal => None,
TokenType::GpuMemoryUsed => None,
TokenType::GpuMemoryPercent => None,

TokenType::TempC => None,
TokenType::TempF => None,

TokenType::DiskFree => None,
TokenType::DiskTotal => None,
TokenType::DiskUsed => None,
TokenType::DiskPercent => None,
TokenType::DiskRead => None,
TokenType::DiskWrite => None,

TokenType::NetDown => None,
TokenType::NetUp => None,

TokenType::LoadAverage1 => get(data.load_average_1()),
TokenType::LoadAverage5 => get(data.load_average_5()),
TokenType::LoadAverage15 => get(data.load_average_15()),

TokenType::Uptime => Client::uptime(),
}
}
Expand Down Expand Up @@ -66,6 +79,10 @@ impl Namespace for Client {
vec![
"cpu_frequency",
"cpu_percent",
"gpu_percent",
"gpu_memory_total",
"gpu_memory_used",
"gpu_memory_percent",
"temp_c",
"temp_f",
"disk_free",
Expand All @@ -90,28 +107,41 @@ impl Namespace for Client {
match token {
TokenType::CpuFrequency => Some(Arc::new(data.cpu_frequency())),
TokenType::CpuPercent => Some(Arc::new(data.cpu_percent())),

TokenType::MemoryFree => None,
TokenType::MemoryAvailable => None,
TokenType::MemoryTotal => None,
TokenType::MemoryUsed => None,
TokenType::MemoryPercent => None,

TokenType::SwapFree => None,
TokenType::SwapTotal => None,
TokenType::SwapUsed => None,
TokenType::SwapPercent => None,

TokenType::GpuPercent => Some(Arc::new(data.gpu_percent())),
TokenType::GpuMemoryFree => Some(Arc::new(data.gpu_memory_free())),
TokenType::GpuMemoryTotal => Some(Arc::new(data.gpu_memory_total())),
TokenType::GpuMemoryUsed => Some(Arc::new(data.gpu_memory_used())),
TokenType::GpuMemoryPercent => Some(Arc::new(data.gpu_memory_percent())),

TokenType::TempC => Some(Arc::new(data.temp_c())),
TokenType::TempF => Some(Arc::new(data.temp_f())),

TokenType::DiskFree => Some(Arc::new(data.disk_free())),
TokenType::DiskTotal => Some(Arc::new(data.disk_total())),
TokenType::DiskUsed => Some(Arc::new(data.disk_used())),
TokenType::DiskPercent => Some(Arc::new(data.disk_percent())),
TokenType::DiskRead => Some(Arc::new(data.disk_read())),
TokenType::DiskWrite => Some(Arc::new(data.disk_write())),

TokenType::NetDown => Some(Arc::new(data.net_down())),
TokenType::NetUp => Some(Arc::new(data.net_up())),

TokenType::LoadAverage1 => None,
TokenType::LoadAverage5 => None,
TokenType::LoadAverage15 => None,

TokenType::Uptime => None,
}
}
Expand Down
5 changes: 5 additions & 0 deletions src/clients/sysinfo/lua.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ pub(super) fn add_methods<M: UserDataMethods<LuaClient<Client>>>(methods: &mut M
swap_total => SwapTotal,
swap_used => SwapUsed,
swap_percent => SwapPercent,
gpu_percent => GpuPercent,
gpu_memory_free => GpuMemoryFree,
gpu_memory_total => GpuMemoryTotal,
gpu_memory_used => GpuMemoryUsed,
gpu_memory_percent => GpuMemoryPercent,
temp_c => TempC,
temp_f => TempF,
disk_free => DiskFree,
Expand Down
Loading
Loading