mirror of
https://github.com/ClementTsang/bottom.git
synced 2025-07-27 07:34:27 +02:00
other: re-enable disk usage split, update help menu (#963)
* Revert "other: revert disk usage change for now (#962)" This reverts commit d3661c23200a66c7dc01f4e534d8d7e97dc188d2. * some cleanup * update help menu * update screenshot * update changelog wording * Remove redundant newlines * Use type system to ensure help constants match in size
This commit is contained in:
parent
0a83456adb
commit
22e386a38c
@ -20,6 +20,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## Other
|
## Other
|
||||||
|
|
||||||
|
- [#950](https://github.com/ClementTsang/bottom/pull/950): Update help menu for disk and temperature widgets with sorting support.
|
||||||
|
|
||||||
## [0.7.1] - 2023-01-06
|
## [0.7.1] - 2023-01-06
|
||||||
|
|
||||||
## Bug Fixes
|
## Bug Fixes
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 26 KiB |
@ -33,6 +33,7 @@ Note that key bindings are generally case-sensitive.
|
|||||||
| ++u++ | Sort by amount used, press again to reverse sorting order |
|
| ++u++ | Sort by amount used, press again to reverse sorting order |
|
||||||
| ++n++ | Sort by amount free, press again to reverse sorting order |
|
| ++n++ | Sort by amount free, press again to reverse sorting order |
|
||||||
| ++t++ | Sort by total space available, press again to reverse sorting order |
|
| ++t++ | Sort by total space available, press again to reverse sorting order |
|
||||||
|
| ++p++ | Sort by percentage used, press again to reverse sorting order |
|
||||||
| ++r++ | Sort by read rate, press again to reverse sorting order |
|
| ++r++ | Sort by read rate, press again to reverse sorting order |
|
||||||
| ++w++ | Sort by write rate, press again to reverse sorting order |
|
| ++w++ | Sort by write rate, press again to reverse sorting order |
|
||||||
|
|
||||||
|
26
src/app.rs
26
src/app.rs
@ -1159,8 +1159,7 @@ impl App {
|
|||||||
.disk_state
|
.disk_state
|
||||||
.get_mut_widget_state(self.current_widget.widget_id)
|
.get_mut_widget_state(self.current_widget.widget_id)
|
||||||
{
|
{
|
||||||
disk.table.set_sort_index(0);
|
disk.set_index(0);
|
||||||
disk.force_data_update();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'g' => {
|
'g' => {
|
||||||
@ -1207,8 +1206,7 @@ impl App {
|
|||||||
.disk_state
|
.disk_state
|
||||||
.get_mut_widget_state(self.current_widget.widget_id)
|
.get_mut_widget_state(self.current_widget.widget_id)
|
||||||
{
|
{
|
||||||
disk.table.set_sort_index(1);
|
disk.set_index(1);
|
||||||
disk.force_data_update();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'p' => {
|
'p' => {
|
||||||
@ -1219,6 +1217,11 @@ impl App {
|
|||||||
{
|
{
|
||||||
proc_widget_state.select_column(ProcWidget::PID_OR_COUNT);
|
proc_widget_state.select_column(ProcWidget::PID_OR_COUNT);
|
||||||
}
|
}
|
||||||
|
} else if let Some(disk) = self
|
||||||
|
.disk_state
|
||||||
|
.get_mut_widget_state(self.current_widget.widget_id)
|
||||||
|
{
|
||||||
|
disk.set_index(5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'P' => {
|
'P' => {
|
||||||
@ -1243,8 +1246,7 @@ impl App {
|
|||||||
.disk_state
|
.disk_state
|
||||||
.get_mut_widget_state(self.current_widget.widget_id)
|
.get_mut_widget_state(self.current_widget.widget_id)
|
||||||
{
|
{
|
||||||
disk.table.set_sort_index(3);
|
disk.set_index(3);
|
||||||
disk.force_data_update();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'?' => {
|
'?' => {
|
||||||
@ -1268,8 +1270,7 @@ impl App {
|
|||||||
.disk_state
|
.disk_state
|
||||||
.get_mut_widget_state(self.current_widget.widget_id)
|
.get_mut_widget_state(self.current_widget.widget_id)
|
||||||
{
|
{
|
||||||
disk.table.set_sort_index(4);
|
disk.set_index(4);
|
||||||
disk.force_data_update();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'+' => self.on_plus(),
|
'+' => self.on_plus(),
|
||||||
@ -1293,8 +1294,7 @@ impl App {
|
|||||||
.disk_state
|
.disk_state
|
||||||
.get_mut_widget_state(self.current_widget.widget_id)
|
.get_mut_widget_state(self.current_widget.widget_id)
|
||||||
{
|
{
|
||||||
disk.table.set_sort_index(2);
|
disk.set_index(2);
|
||||||
disk.force_data_update();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'r' => {
|
'r' => {
|
||||||
@ -1302,8 +1302,7 @@ impl App {
|
|||||||
.disk_state
|
.disk_state
|
||||||
.get_mut_widget_state(self.current_widget.widget_id)
|
.get_mut_widget_state(self.current_widget.widget_id)
|
||||||
{
|
{
|
||||||
disk.table.set_sort_index(5);
|
disk.set_index(6);
|
||||||
disk.force_data_update();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'w' => {
|
'w' => {
|
||||||
@ -1311,8 +1310,7 @@ impl App {
|
|||||||
.disk_state
|
.disk_state
|
||||||
.get_mut_widget_state(self.current_widget.widget_id)
|
.get_mut_widget_state(self.current_widget.widget_id)
|
||||||
{
|
{
|
||||||
disk.table.set_sort_index(6);
|
disk.set_index(7);
|
||||||
disk.force_data_update();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
'I' => self.invert_sort(),
|
'I' => self.invert_sort(),
|
||||||
|
@ -187,7 +187,7 @@ impl Painter {
|
|||||||
let mut styled_help_spans = Vec::new();
|
let mut styled_help_spans = Vec::new();
|
||||||
|
|
||||||
// Init help text:
|
// Init help text:
|
||||||
(*HELP_TEXT).iter().enumerate().for_each(|(itx, section)| {
|
HELP_TEXT.iter().enumerate().for_each(|(itx, section)| {
|
||||||
if itx == 0 {
|
if itx == 0 {
|
||||||
styled_help_spans.extend(
|
styled_help_spans.extend(
|
||||||
section
|
section
|
||||||
|
@ -77,9 +77,7 @@ impl Painter {
|
|||||||
});
|
});
|
||||||
|
|
||||||
let max_scroll_index = &mut app_state.help_dialog_state.scroll_state.max_scroll_index;
|
let max_scroll_index = &mut app_state.help_dialog_state.scroll_state.max_scroll_index;
|
||||||
*max_scroll_index = (self.styled_help_text.len() as u16
|
*max_scroll_index = (self.styled_help_text.len() as u16 + 3 + overflow_buffer)
|
||||||
+ (constants::HELP_TEXT.len() as u16 - 5)
|
|
||||||
+ overflow_buffer)
|
|
||||||
.saturating_sub(draw_loc.height + 1);
|
.saturating_sub(draw_loc.height + 1);
|
||||||
|
|
||||||
// Fix if over-scrolled
|
// Fix if over-scrolled
|
||||||
|
@ -261,15 +261,17 @@ pub static NORD_LIGHT_COLOUR_PALETTE: Lazy<ConfigColours> = Lazy::new(|| ConfigC
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Help text
|
// Help text
|
||||||
pub const HELP_CONTENTS_TEXT: [&str; 8] = [
|
pub const HELP_CONTENTS_TEXT: [&str; 10] = [
|
||||||
"Either scroll or press the number key to go to the corresponding help menu section:",
|
"Either scroll or press the number key to go to the corresponding help menu section:",
|
||||||
"1 - General",
|
"1 - General",
|
||||||
"2 - CPU widget",
|
"2 - CPU widget",
|
||||||
"3 - Process widget",
|
"3 - Process widget",
|
||||||
"4 - Process search widget",
|
"4 - Process search widget",
|
||||||
"5 - Process sort widget",
|
"5 - Process sort widget",
|
||||||
"6 - Battery widget",
|
"6 - Temperature widget",
|
||||||
"7 - Basic memory widget",
|
"7 - Disk widget",
|
||||||
|
"8 - Battery widget",
|
||||||
|
"9 - Basic memory widget",
|
||||||
];
|
];
|
||||||
|
|
||||||
// TODO [Help]: Search in help?
|
// TODO [Help]: Search in help?
|
||||||
@ -310,17 +312,17 @@ pub const GENERAL_HELP_TEXT: [&str; 32] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
pub const CPU_HELP_TEXT: [&str; 2] = [
|
pub const CPU_HELP_TEXT: [&str; 2] = [
|
||||||
"2 - CPU widget\n",
|
"2 - CPU widget",
|
||||||
"Mouse scroll Scrolling over an CPU core/average shows only that entry on the chart",
|
"Mouse scroll Scrolling over an CPU core/average shows only that entry on the chart",
|
||||||
];
|
];
|
||||||
|
|
||||||
pub const PROCESS_HELP_TEXT: [&str; 15] = [
|
pub const PROCESS_HELP_TEXT: [&str; 15] = [
|
||||||
"3 - Process widget",
|
"3 - Process widget",
|
||||||
"dd, F9 Kill the selected process",
|
"dd, F9 Kill the selected process",
|
||||||
"c Sort by CPU usage, press again to reverse sorting order",
|
"c Sort by CPU usage, press again to reverse",
|
||||||
"m Sort by memory usage, press again to reverse sorting order",
|
"m Sort by memory usage, press again to reverse",
|
||||||
"p Sort by PID name, press again to reverse sorting order",
|
"p Sort by PID name, press again to reverse",
|
||||||
"n Sort by process name, press again to reverse sorting order",
|
"n Sort by process name, press again to reverse",
|
||||||
"Tab Group/un-group processes with the same name",
|
"Tab Group/un-group processes with the same name",
|
||||||
"Ctrl-f, / Open process search widget",
|
"Ctrl-f, / Open process search widget",
|
||||||
"P Toggle between showing the full command or just the process name",
|
"P Toggle between showing the full command or just the process name",
|
||||||
@ -384,7 +386,7 @@ pub const SEARCH_HELP_TEXT: [&str; 48] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
pub const SORT_HELP_TEXT: [&str; 6] = [
|
pub const SORT_HELP_TEXT: [&str; 6] = [
|
||||||
"5 - Sort widget\n",
|
"5 - Sort widget",
|
||||||
"Down, 'j' Scroll down in list",
|
"Down, 'j' Scroll down in list",
|
||||||
"Up, 'k' Scroll up in list",
|
"Up, 'k' Scroll up in list",
|
||||||
"Mouse scroll Scroll through sort widget",
|
"Mouse scroll Scroll through sort widget",
|
||||||
@ -392,24 +394,44 @@ pub const SORT_HELP_TEXT: [&str; 6] = [
|
|||||||
"Enter Sort by current selected column",
|
"Enter Sort by current selected column",
|
||||||
];
|
];
|
||||||
|
|
||||||
|
pub const TEMP_HELP_WIDGET: [&str; 3] = [
|
||||||
|
"6 - Temperature widget",
|
||||||
|
"'s' Sort by sensor name, press again to reverse",
|
||||||
|
"'t' Sort by temperature, press again to reverse",
|
||||||
|
];
|
||||||
|
|
||||||
|
pub const DISK_HELP_WIDGET: [&str; 9] = [
|
||||||
|
"7 - Disk widget",
|
||||||
|
"'d' Sort by disk name, press again to reverse",
|
||||||
|
"'m' Sort by disk mount, press again to reverse",
|
||||||
|
"'u' Sort by disk usage, press again to reverse",
|
||||||
|
"'n' Sort by disk free space, press again to reverse",
|
||||||
|
"'t' Sort by total disk space, press again to reverse",
|
||||||
|
"'p' Sort by disk usage percentage, press again to reverse",
|
||||||
|
"'r' Sort by disk read activity, press again to reverse",
|
||||||
|
"'w' Sort by disk write activity, press again to reverse",
|
||||||
|
];
|
||||||
|
|
||||||
pub const BATTERY_HELP_TEXT: [&str; 3] = [
|
pub const BATTERY_HELP_TEXT: [&str; 3] = [
|
||||||
"6 - Battery widget",
|
"8 - Battery widget",
|
||||||
"Left Go to previous battery",
|
"Left Go to previous battery",
|
||||||
"Right Go to next battery",
|
"Right Go to next battery",
|
||||||
];
|
];
|
||||||
|
|
||||||
pub const BASIC_MEM_HELP_TEXT: [&str; 2] = [
|
pub const BASIC_MEM_HELP_TEXT: [&str; 2] = [
|
||||||
"7 - Basic memory widget",
|
"9 - Basic memory widget",
|
||||||
"% Toggle between values and percentages for memory usage",
|
"% Toggle between values and percentages for memory usage",
|
||||||
];
|
];
|
||||||
|
|
||||||
pub const HELP_TEXT: &[&[&str]] = &[
|
pub const HELP_TEXT: [&[&str]; HELP_CONTENTS_TEXT.len()] = [
|
||||||
&HELP_CONTENTS_TEXT,
|
&HELP_CONTENTS_TEXT,
|
||||||
&GENERAL_HELP_TEXT,
|
&GENERAL_HELP_TEXT,
|
||||||
&CPU_HELP_TEXT,
|
&CPU_HELP_TEXT,
|
||||||
&PROCESS_HELP_TEXT,
|
&PROCESS_HELP_TEXT,
|
||||||
&SEARCH_HELP_TEXT,
|
&SEARCH_HELP_TEXT,
|
||||||
&SORT_HELP_TEXT,
|
&SORT_HELP_TEXT,
|
||||||
|
&TEMP_HELP_WIDGET,
|
||||||
|
&DISK_HELP_WIDGET,
|
||||||
&BATTERY_HELP_TEXT,
|
&BATTERY_HELP_TEXT,
|
||||||
&BASIC_MEM_HELP_TEXT,
|
&BASIC_MEM_HELP_TEXT,
|
||||||
];
|
];
|
||||||
@ -691,3 +713,17 @@ pub const CONFIG_LAYOUT_HEAD: &str = r##"
|
|||||||
pub const CONFIG_FILTER_HEAD: &str = r##"
|
pub const CONFIG_FILTER_HEAD: &str = r##"
|
||||||
# These options represent disabled entries for the temperature and disk widgets.
|
# These options represent disabled entries for the temperature and disk widgets.
|
||||||
"##;
|
"##;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn help_menu_matches_entry_len() {
|
||||||
|
assert_eq!(
|
||||||
|
HELP_CONTENTS_TEXT.len(),
|
||||||
|
HELP_TEXT.len(),
|
||||||
|
"the two should be equal, or this test should be updated"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -111,7 +111,7 @@ impl ColumnHeader for DiskWidgetColumn {
|
|||||||
DiskWidgetColumn::Mount => "Mount(m)",
|
DiskWidgetColumn::Mount => "Mount(m)",
|
||||||
DiskWidgetColumn::Used => "Used(u)",
|
DiskWidgetColumn::Used => "Used(u)",
|
||||||
DiskWidgetColumn::Free => "Free(n)",
|
DiskWidgetColumn::Free => "Free(n)",
|
||||||
DiskWidgetColumn::UsedPercent => "Used(u)",
|
DiskWidgetColumn::UsedPercent => "Used%(p)",
|
||||||
DiskWidgetColumn::FreePercent => "Free%",
|
DiskWidgetColumn::FreePercent => "Free%",
|
||||||
DiskWidgetColumn::Total => "Total(t)",
|
DiskWidgetColumn::Total => "Total(t)",
|
||||||
DiskWidgetColumn::IoRead => "R/s(r)",
|
DiskWidgetColumn::IoRead => "R/s(r)",
|
||||||
@ -213,9 +213,10 @@ impl DiskTableWidget {
|
|||||||
let columns = [
|
let columns = [
|
||||||
SortColumn::soft(DiskWidgetColumn::Disk, Some(0.2)),
|
SortColumn::soft(DiskWidgetColumn::Disk, Some(0.2)),
|
||||||
SortColumn::soft(DiskWidgetColumn::Mount, Some(0.2)),
|
SortColumn::soft(DiskWidgetColumn::Mount, Some(0.2)),
|
||||||
SortColumn::hard(DiskWidgetColumn::UsedPercent, 9).default_descending(),
|
SortColumn::hard(DiskWidgetColumn::Used, 8).default_descending(),
|
||||||
SortColumn::hard(DiskWidgetColumn::Free, 8).default_descending(),
|
SortColumn::hard(DiskWidgetColumn::Free, 8).default_descending(),
|
||||||
SortColumn::hard(DiskWidgetColumn::Total, 9).default_descending(),
|
SortColumn::hard(DiskWidgetColumn::Total, 9).default_descending(),
|
||||||
|
SortColumn::hard(DiskWidgetColumn::UsedPercent, 9).default_descending(),
|
||||||
SortColumn::hard(DiskWidgetColumn::IoRead, 10).default_descending(),
|
SortColumn::hard(DiskWidgetColumn::IoRead, 10).default_descending(),
|
||||||
SortColumn::hard(DiskWidgetColumn::IoWrite, 11).default_descending(),
|
SortColumn::hard(DiskWidgetColumn::IoWrite, 11).default_descending(),
|
||||||
];
|
];
|
||||||
@ -254,4 +255,9 @@ impl DiskTableWidget {
|
|||||||
}
|
}
|
||||||
self.table.set_data(data);
|
self.table.set_data(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn set_index(&mut self, index: usize) {
|
||||||
|
self.table.set_sort_index(index);
|
||||||
|
self.force_data_update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user