bottom/README.md

130 lines
6 KiB
Markdown
Raw Normal View History

# bottom
2019-09-04 03:27:25 +00:00
2019-09-18 18:52:18 +00:00
[![Build Status](https://travis-ci.com/ClementTsang/bottom.svg?token=1wvzVgp94E1TZyPNs8JF&branch=master)](https://travis-ci.com/ClementTsang/bottom) [![crates.io link](https://img.shields.io/crates/v/bottom.svg)](https://crates.io/crates/bottom)
2019-09-15 02:29:40 +00:00
2020-01-03 04:42:44 +00:00
A graphical top clone, written in Rust. Inspired by both [gtop](https://github.com/aksakalli/gtop) and [gotop](https://github.com/cjbassi/gotop)
2019-09-04 03:27:25 +00:00
2019-09-17 01:45:48 +00:00
![Quick demo recording](assets/recording_1.gif)
2019-09-09 04:09:58 +00:00
## Installation
2019-09-09 04:09:58 +00:00
### Linux
You can install the in-development version by cloning and using `cargo build --release`. You can get release versions using `cargo install bottom`, or manually building from the Releases page. Other installation methods based on distros are as follows:
2020-01-10 03:31:49 +00:00
#### Arch Linux
You can get the release versions from the AUR by installing `bottom`.
2019-09-09 04:09:58 +00:00
### Windows
You can install the in-development version by cloning and using `cargo build --release`. You can get release versions using `cargo install bottom`, or manually building from the Releases page. You may need to install a font like [FreeMono](https://fonts2u.com/free-monospaced.font) and use a terminal like cmder for font support to work properly, unfortunately.
2019-09-09 04:09:58 +00:00
2019-12-17 07:11:16 +00:00
### macOS
2019-09-09 04:09:58 +00:00
2019-12-17 07:11:16 +00:00
macOS support will hopefully come soon<sup>TM</sup>.
2019-09-08 05:28:03 +00:00
## Support
2020-01-03 03:54:39 +00:00
The compatibility of each widget and operating systems are, as of version 0.1.0, as follows:
| OS/Widget | CPU | Memory | Disks | Temperature | Processes | Networks |
| --------- | -------- | -------- | -------- | --------------------- | --------- | --------------------------------------------- |
| Linux | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| Windows | ✓ | ✓ | ✓ | Currently not working | ✓ | Partially supported (total RX/TX unavailable) |
| macOS | Untested | Untested | Untested | Untested | Untested | Untested |
2019-09-17 01:45:48 +00:00
## Usage
2019-10-10 22:05:26 +00:00
Run using `btm`.
2019-09-17 02:39:57 +00:00
### Command line options
2019-12-16 07:40:35 +00:00
- `-h`, `--help` shows the help screen and exits.
2019-09-17 02:39:57 +00:00
2019-12-16 07:40:35 +00:00
- `-a`, `--avgcpu` enables also showing the average CPU usage in addition to per-core CPU usage.
2019-09-25 05:54:38 +00:00
2019-12-16 07:40:35 +00:00
- `-m`, `--dot-marker` uses a dot marker instead of the default braille marker.
2019-09-17 02:39:57 +00:00
2019-09-25 05:34:33 +00:00
- `-c`, `--celsius` displays the temperature type in Celsius. This is the default.
2019-09-17 02:39:57 +00:00
2019-12-16 07:40:35 +00:00
- `-f`, `--fahrenheit` displays the temperature type in Fahrenheit.
2019-09-17 02:39:57 +00:00
2019-12-16 07:40:35 +00:00
- `-k`, `--kelvin` displays the temperature type in Kelvin.
2019-09-17 02:39:57 +00:00
2019-09-25 05:34:33 +00:00
- `-v`, `--version` displays the version number and exits.
2019-09-17 02:39:57 +00:00
2019-12-13 04:03:34 +00:00
- `-d`, `--debug` enables debug logging.
2019-12-26 00:00:24 +00:00
- `-r <RATE>`, `--rate <RATE>` will set the refresh rate in _milliseconds_. Lowest it can go is 250ms, the highest it can go is 2<sup>128</sup> - 1. Defaults to 1000ms, and lower values may take more resources due to more frequent polling of data, and may be less accurate in some circumstances.
2019-09-17 02:39:57 +00:00
2019-12-28 06:21:49 +00:00
- `-l`, `--left_legend` will move external table legends to the left side rather than the right side. Right side is default.
2020-01-03 04:42:44 +00:00
- `-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`).
2019-12-22 22:37:07 +00:00
### Keybindings
2019-09-17 01:45:48 +00:00
#### General
- `Ctrl-q`, `Ctrl-c` to quit.
- `Ctrl-r` to reset the screen and reset all collected data.
2019-09-17 01:45:48 +00:00
- `f` to freeze the screen from updating with new data. Press `f` again to unfreeze. Note that monitoring will still continue in the background.
2019-10-10 02:34:09 +00:00
- `Ctrl-Up` or `Ctrl-k`, `Ctrl-Down` or `Ctrl-j`, `Ctrl-Left` or `Ctrl-h`, `Ctrl-Right` or `Ctrl-l` to navigate between widgets.
2019-10-10 02:42:50 +00:00
- `Esc` to close a dialog window.
2019-10-10 02:00:10 +00:00
- `?` to get a help screen explaining the controls. Note all controls except `Esc` to close the dialog will be disabled while this is open.
2019-09-17 01:45:48 +00:00
#### Scrollable Tables
- `Up` or `k` and `Down` or `j` scrolls through the list if the widget is a table (Temperature, Disks, Processes).
- `gg` or `Home` to jump to the first entry of the current table.
- `G` (`Shift-g`) or `End` to jump to the last entry of the current table.
#### Processes
2019-09-17 01:45:48 +00:00
2019-12-31 02:05:39 +00:00
- `dd` to kill the selected process
2019-09-17 01:45:48 +00:00
2019-09-25 05:34:33 +00:00
- `c` to sort by CPU usage. Sorts in descending order by default. Press again to reverse sorting order.
2019-09-17 01:45:48 +00:00
2019-09-25 05:34:33 +00:00
- `m` to sort by memory usage. Sorts in descending order by default. Press again to reverse sorting order.
2019-09-17 01:45:48 +00:00
2019-09-25 05:34:33 +00:00
- `p` to sort by PID. Sorts in ascending order by default. Press again to reverse sorting order.
2019-09-17 01:45:48 +00:00
2019-09-25 05:34:33 +00:00
- `n` to sort by process name. Sorts in ascending order by default. Press again to reverse sorting order.
2019-09-17 01:45:48 +00:00
- `Tab` to group together processes with the same name. Disables PID sorting. `dd` will now kill all processes covered by that name.
- `Ctrl-f` or `/` to toggle a search box for finding a process. By default this searches for process name, press `p` or `n` within the search bar to switch between searching for PID and name respectively.
2019-12-17 07:11:16 +00:00
### Mouse actions
2019-09-17 01:45:48 +00:00
- Scrolling with the mouse will scroll through the currently selected list, similar to using the up/down arrow keys.
2019-12-31 02:05:39 +00:00
2019-12-17 07:11:16 +00:00
## Thanks, kudos, and all the like
2019-09-04 03:27:25 +00:00
2020-01-03 04:42:44 +00:00
- This project is very much inspired by both [gotop](https://github.com/cjbassi/gotop) and [gtop](https://github.com/aksakalli/gtop) .
2019-09-25 05:34:33 +00:00
- This application was written with the following libraries:
- [chrono](https://github.com/chronotope/chrono)
- [clap](https://github.com/clap-rs/clap)
- [crossterm](https://github.com/TimonPost/crossterm)
- [failure](https://github.com/rust-lang-nursery/failure)
- [fern](https://github.com/daboross/fern)
- [futures-rs](https://github.com/rust-lang-nursery/futures-rs)
- [futures-timer](https://github.com/rustasync/futures-timer)
- [heim](https://github.com/heim-rs/heim)
- [log](https://github.com/rust-lang-nursery/log)
- [sysinfo](https://github.com/GuillaumeGomez/sysinfo)
- [tokio](https://github.com/tokio-rs/tokio)
2019-12-13 04:03:34 +00:00
- [tui-rs](https://github.com/fdehau/tui-rs)
2019-09-25 05:34:33 +00:00
- [winapi](https://github.com/retep998/winapi-rs)
2020-01-03 03:54:39 +00:00
- [lazy_static](https://github.com/rust-lang-nursery/lazy-static.rs)