mirror of
https://github.com/ClementTsang/bottom
synced 2024-11-25 21:50:20 +00:00
Added interval, disk tracking.
This commit is contained in:
parent
243742de2a
commit
832d32700e
10 changed files with 62 additions and 19 deletions
|
@ -26,7 +26,7 @@ A gotop clone, written in Rust. Mostly done in an effort to learn Rust, while a
|
|||
|
||||
* Definitely keybinds
|
||||
|
||||
* Filtering in processing
|
||||
* Filtering in processes along with sorting
|
||||
|
||||
* See if current disk activity is possible to do/graph?
|
||||
|
||||
|
|
4
TOOD.md
4
TOOD.md
|
@ -8,8 +8,10 @@
|
|||
|
||||
* Write cursive display
|
||||
|
||||
* Charting?
|
||||
|
||||
* Keybindings
|
||||
|
||||
* Theming
|
||||
|
||||
* Efficiency!!! Reuse hashmaps for example.
|
||||
* Efficiency!!! Make sure no wasted hashmaps, use references, etc.
|
||||
|
|
27
src/main.rs
27
src/main.rs
|
@ -3,8 +3,29 @@ mod widgets;
|
|||
use widgets::{cpu, disks, mem, network, processes, temperature};
|
||||
|
||||
fn main() {
|
||||
// Initialize
|
||||
let mut system = System::new();
|
||||
system.refresh_all();
|
||||
//processes::draw_sorted_processes(processes::ProcessSorting::NAME, true, &system);
|
||||
disks::draw_disk_usage_data(&system);
|
||||
let refresh_interval = 10;
|
||||
|
||||
// Start loop (TODO: do that)
|
||||
loop {
|
||||
system.refresh_system();
|
||||
system.refresh_processes();
|
||||
system.refresh_disk_list();
|
||||
system.refresh_disks();
|
||||
system.refresh_network();
|
||||
|
||||
// Get data, potentially store?
|
||||
//let list_of_processes = processes::get_sorted_processes_list(processes::ProcessSorting::NAME, true, &system);
|
||||
let list_of_disks = disks::get_disk_usage_list(&system);
|
||||
|
||||
for disk in list_of_disks {
|
||||
println!("{} is mounted on {}: {}/{}", disk.name, disk.mount_point, disk.avail_space, disk.total_space);
|
||||
}
|
||||
|
||||
// Draw using cursive
|
||||
|
||||
// Repeat on interval
|
||||
std::thread::sleep(std::time::Duration::from_secs(refresh_interval));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
struct TimedCPUData<'a> {
|
||||
cpu_name: &'a str,
|
||||
cpu_usage: f32,
|
||||
time: std::time::Duration,
|
||||
}
|
||||
|
||||
fn get_timestamped_cpu_data() {}
|
||||
|
||||
fn draw_cpu_data() {}
|
||||
pub fn get_cpu_data_list() {}
|
||||
|
|
|
@ -1,11 +1,24 @@
|
|||
use sysinfo::{System, SystemExt, DiskExt};
|
||||
use sysinfo::{System, SystemExt, Disk, DiskExt};
|
||||
|
||||
fn get_timestamped_disk_data() {}
|
||||
|
||||
pub fn draw_disk_usage_data(sys: &System) {
|
||||
let list_of_disks = sys.get_disks();
|
||||
|
||||
for disk in list_of_disks {
|
||||
println!("Disk: Total size: {}, used: {}, disk: {}, mount: {}", disk.get_total_space(), disk.get_total_space() - disk.get_available_space(), disk.get_name().to_str().unwrap(), disk.get_mount_point().to_str().unwrap());
|
||||
pub struct DiskInfo<'a> {
|
||||
pub name: &'a str,
|
||||
pub mount_point: &'a str,
|
||||
pub avail_space: u64,
|
||||
pub total_space: u64,
|
||||
}
|
||||
|
||||
pub fn get_disk_usage_list(sys: &System) -> Vec<DiskInfo> {
|
||||
let result_disks = sys.get_disks();
|
||||
let mut vec_disks : Vec<DiskInfo> = Vec::new();
|
||||
|
||||
for disk in result_disks {
|
||||
vec_disks.push(DiskInfo {
|
||||
name: disk.get_name().to_str().unwrap(),
|
||||
mount_point: disk.get_mount_point().to_str().unwrap(),
|
||||
avail_space: disk.get_available_space(),
|
||||
total_space: disk.get_total_space(),
|
||||
});
|
||||
}
|
||||
|
||||
vec_disks
|
||||
}
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
fn get_timestamped_ram_data() {}
|
||||
|
||||
fn draw_ram_data() {}
|
||||
pub fn get_ram_data_list() {}
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
fn get_timestamped_network_data() {}
|
||||
|
||||
fn draw_network_data() {}
|
||||
fn get_network_data_list() {}
|
||||
|
|
|
@ -50,7 +50,7 @@ fn get_ordering<T: std::cmp::PartialOrd>(a_val: T, b_val: T, reverse_order: bool
|
|||
}
|
||||
}
|
||||
|
||||
pub fn draw_sorted_processes(sorting_method: ProcessSorting, reverse_order: bool, sys: &System) {
|
||||
pub fn get_sorted_processes_list(sorting_method: ProcessSorting, reverse_order: bool, sys: &System) {
|
||||
let process_hashmap = sys.get_process_list();
|
||||
|
||||
// TODO: Evaluate whether this is too slow!
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
fn get_timestamped_temperature() {}
|
||||
|
||||
fn draw_temperatures() {}
|
||||
fn get_temps_list() {}
|
||||
|
|
1
src/window/mod.rs
Normal file
1
src/window/mod.rs
Normal file
|
@ -0,0 +1 @@
|
|||
use cursive::Cursive;
|
Loading…
Reference in a new issue