2019-09-17 02:54:39 +00:00
# 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
2019-09-25 05:34:33 +00:00
A 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-25 05:34:33 +00:00
_Note that the background you see is not part of the app, that's just because I use a slightly transparent terminal._
2019-09-17 01:45:48 +00:00
2019-09-09 04:09:58 +00:00
## Installation
2019-09-05 22:28:54 +00:00
2019-09-09 04:09:58 +00:00
### Linux
2019-09-25 05:34:33 +00:00
You can install by cloning and using `cargo build --release` , or download the pre-compiled binary in Releases. Note this needs the nightly toolchain if you are building.
2019-09-09 04:09:58 +00:00
### Windows
2019-09-25 05:34:33 +00:00
You can currently install by cloning and building yourself. Note this needs the nightly toolchain if you are building.
2019-09-09 04:09:58 +00:00
### MacOS
2019-09-25 05:34:33 +00:00
Currently, I'm unable to really dev or test on MacOS, so I'm not sure how well this will work, if at all. I'll try to source MacOS hardware to test this application.
2019-09-08 05:28:03 +00:00
2019-09-17 01:45:48 +00:00
## Usage
2019-09-17 02:39:57 +00:00
### Command line options
2019-09-25 05:34:33 +00:00
- `-h` , `--help` to show the help screen and exit (basically has all of the below CLI option info).
2019-09-17 02:39:57 +00:00
2019-09-25 05:54:38 +00:00
- `-a` , `--avgcpu` enables showing the average CPU usage on rustop.
- `-m` , `--dot-marker` uses a dot marker instead of the default braille marker. This is useful for things like Powershell which display braille markers incorrectly.
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-09-25 05:34:33 +00:00
- `-f` , `--fahrenheit` displays the temperature type in Fahrenheit. This is the default.
2019-09-17 02:39:57 +00:00
2019-09-25 05:34:33 +00:00
- `-k` , `--kelvin` displays the temperature type in Kelvin. This is the default.
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-09-25 05:34:33 +00:00
- `-r <RATE>` , `--rate <RATE>` will set the refresh rate in _milliseconds_ . Pick a range from 250ms to `UINT_MAX` . Defaults to 1000ms, and higher 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-09-25 05:34:33 +00:00
### Keybinds
2019-09-17 01:45:48 +00:00
#### General
2019-10-10 22:01:23 +00:00
- `q` , `Ctrl-c` to quit.
- `Ctrl-r` to reset the screen and reset all collected data.
2019-09-17 01:45:48 +00:00
2019-10-10 02:50:36 +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
2019-09-25 20:43:13 +00:00
- `Up/k` , `Down/j` , `Left/h` , `Right/l` to navigate between panels.
2019-10-10 02:00:10 +00:00
- `Shift+Up` and `Shift+Down` scrolls through the list if the panel is a table (Temperature, Disks, Processes).
2019-10-10 02:42:50 +00:00
- `Esc` to close a dialog window.
2019-10-10 02:00:10 +00:00
2019-10-10 02:50:36 +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
#### Processes Panel
2019-10-10 02:00:10 +00:00
- `dd` to kill the selected process - **I would highly recommend you to be careful using this, lest you accidentally kill the wrong 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
### Mouse Actions
2019-09-17 02:39:57 +00:00
[* Scrolling either scrolls through the list if the panel is a table (Temperature, Disks, Processes), or zooms in and out if it is a chart.]: < >
2019-09-25 05:34:33 +00:00
- Scrolling currently only scrolls through the list if you are on the Processes panel. This will change in the future.
2019-09-17 02:39:57 +00:00
2019-09-04 03:27:25 +00:00
## Thanks
2019-09-25 05:34:33 +00:00
- As mentioned, this project is very much inspired by both [gotop ](https://github.com/cjbassi/gotop ) and [gtop ](https://github.com/aksakalli/gtop ) .
- 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 )
- [tui-rs ](https://github.com/fdehau/tui-rs ) (note I used a fork due to some issues I faced, you can find that [here ](https://github.com/ClementTsang/tui-rs ))
- [winapi ](https://github.com/retep998/winapi-rs )
2019-09-09 04:09:58 +00:00
## Why
2019-09-25 05:34:33 +00:00
I was looking to try writing more things in Rust, and I love the gotop tool. And thus, this project was born.