mirror of
https://github.com/ClementTsang/bottom
synced 2024-11-26 06:00:21 +00:00
Add flag to enable by default, documentation
This commit is contained in:
parent
c171cd0e0b
commit
13180c72d4
4 changed files with 43 additions and 11 deletions
|
@ -57,6 +57,8 @@ The compatibility of each widget and operating systems are, as of version 0.1.0,
|
|||
|
||||
- `-u`, `--current_usage` will make a process' CPU usage be based on the current total CPU usage, rather than assuming 100% CPU usage. Only affects Linux for now.
|
||||
|
||||
- `g`, `--group` will group together processes with the same name by default (equivalent to pressing `Tab`).
|
||||
|
||||
### Keybindings
|
||||
|
||||
#### General
|
||||
|
@ -93,6 +95,8 @@ The compatibility of each widget and operating systems are, as of version 0.1.0,
|
|||
|
||||
- `n` to sort by process name. Sorts in ascending order by default. Press again to reverse sorting order.
|
||||
|
||||
- `Tab` to group together processes with the same name. Disables PID sorting. `dd` will now kill all processes covered by that name.
|
||||
|
||||
### Mouse actions
|
||||
|
||||
- Scrolling with the mouse will scroll through the currently selected list, similar to using the up/down arrow keys.
|
||||
|
|
|
@ -124,6 +124,14 @@ impl App {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn on_tab(&mut self) {
|
||||
match self.current_application_position {
|
||||
ApplicationPosition::Process => self.toggle_grouping(),
|
||||
ApplicationPosition::Disk => {}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn is_grouped(&self) -> bool {
|
||||
self.enable_grouping
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ const HIGHLIGHTED_BORDER_STYLE_COLOUR: Color = Color::LightBlue;
|
|||
const GOLDEN_RATIO: f32 = 0.618_034; // Approx, good enough for use (also Clippy gets mad if it's too long)
|
||||
|
||||
lazy_static! {
|
||||
static ref HELP_TEXT: [Text<'static>; 14] = [
|
||||
static ref HELP_TEXT: [Text<'static>; 15] = [
|
||||
Text::raw("\nGeneral Keybindings\n"),
|
||||
Text::raw("q, Ctrl-c to quit.\n"),
|
||||
Text::raw("Ctrl-r to reset all data.\n"),
|
||||
|
@ -36,6 +36,7 @@ lazy_static! {
|
|||
Text::raw("m to sort by memory usage.\n"),
|
||||
Text::raw("p to sort by PID.\n"),
|
||||
Text::raw("n to sort by process name.\n"),
|
||||
Text::raw("`Tab` to group together processes with the same name.\n")
|
||||
];
|
||||
static ref COLOUR_LIST: Vec<Color> = gen_n_colours(constants::NUM_COLOURS);
|
||||
static ref CANVAS_BORDER_STYLE: Style = Style::default().fg(BORDER_STYLE_COLOUR);
|
||||
|
|
29
src/main.rs
29
src/main.rs
|
@ -72,6 +72,7 @@ fn main() -> error::Result<()> {
|
|||
(@arg USE_CURR_USAGE: -u --current_usage "Within Linux, sets a process' CPU usage to be based on the total current CPU usage, rather than assuming 100% usage.")
|
||||
//(@arg CONFIG_LOCATION: -co --config +takes_value "Sets the location of the config file. Expects a config file in the JSON format.")
|
||||
(@arg BASIC_MODE: -b --basic "Sets bottom to basic mode, not showing graphs and only showing basic tables.")
|
||||
(@arg GROUP_PROCESSES: -g --group "Groups processes with the same name together on launch.")
|
||||
)
|
||||
.get_matches();
|
||||
|
||||
|
@ -123,6 +124,11 @@ fn main() -> error::Result<()> {
|
|||
use_current_cpu_total,
|
||||
);
|
||||
|
||||
// Enable grouping immediately if set.
|
||||
if matches.is_present("GROUP_PROCESSES") {
|
||||
app.toggle_grouping();
|
||||
}
|
||||
|
||||
// Set up up tui and crossterm
|
||||
let mut stdout = stdout();
|
||||
enable_raw_mode()?;
|
||||
|
@ -219,7 +225,7 @@ fn main() -> error::Result<()> {
|
|||
KeyCode::Char(uncaught_char) => app.on_char_key(uncaught_char),
|
||||
KeyCode::Esc => app.reset(),
|
||||
KeyCode::Enter => app.on_enter(),
|
||||
KeyCode::Tab => app.toggle_grouping(),
|
||||
KeyCode::Tab => app.on_tab(),
|
||||
_ => {}
|
||||
}
|
||||
} else {
|
||||
|
@ -299,6 +305,15 @@ fn main() -> error::Result<()> {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Quick fix for tab updating the table headers
|
||||
if let data_collection::processes::ProcessSorting::PID = &app.process_sorting_type {
|
||||
if app.is_grouped() {
|
||||
app.process_sorting_type = data_collection::processes::ProcessSorting::CPU; // Go back to default, negate PID for group
|
||||
app.process_sorting_reverse = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Draw!
|
||||
if let Err(err) = canvas::draw_data(&mut terminal, &mut app) {
|
||||
cleanup(&mut terminal)?;
|
||||
|
@ -361,16 +376,20 @@ fn handle_process_sorting(app: &mut app::App) {
|
|||
);
|
||||
|
||||
if let Some(grouped_list_of_processes) = &mut app.data.grouped_list_of_processes {
|
||||
if let data_collection::processes::ProcessSorting::PID = &app.process_sorting_type {
|
||||
data_collection::processes::sort_processes(
|
||||
grouped_list_of_processes,
|
||||
if let data_collection::processes::ProcessSorting::PID = &app.process_sorting_type {
|
||||
&data_collection::processes::ProcessSorting::CPU // Go back to default, negate PID for group
|
||||
&data_collection::processes::ProcessSorting::CPU, // Go back to default, negate PID for group
|
||||
true,
|
||||
);
|
||||
} else {
|
||||
&app.process_sorting_type
|
||||
},
|
||||
data_collection::processes::sort_processes(
|
||||
grouped_list_of_processes,
|
||||
&app.process_sorting_type,
|
||||
app.process_sorting_reverse,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
data_collection::processes::sort_processes(
|
||||
&mut app.data.list_of_processes,
|
||||
|
|
Loading…
Reference in a new issue