.github/ISSUE_TEMPLATE | ||
assets | ||
src | ||
tests | ||
.gitignore | ||
.markdownlint.json | ||
.travis.yml | ||
Cargo.toml | ||
LICENSE | ||
README.md | ||
rustfmt.toml |
bottom
A graphical top clone, written in Rust. Inspired by both gtop and gotop.
Terminal: Kitty Terminal, Font: IBM Plex Mono, OS: Arch Linux
Features
Features of bottom include:
-
CPU widget to show a visual representation of per-core usage. Average CPU display also exists.
-
Memory widget to show a visual representation of both RAM and SWAP usage.
-
Networks widget to show a log-based visual representation of network usage.
-
Sortable and searchable process widget. Searching supports regex, and you can search by PID and process name.
-
Disks widget to display usage and I/O per second.
-
Temperature widget to monitor detected sensors in your system.
The compatibility of each widget and operating systems are, as of version 0.1.0, as follows:
OS | CPU | Memory | Disks | Temperature | Processes | Networks |
---|---|---|---|---|---|---|
Linux (tested on Arch Linux) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Windows (tested on Windows 10) | ✓ | ✓ | ✓ | ✗ | ✓ | Total RX/TX not shown |
macOS (tested on macOS Catalina) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Installation
In all cases you can install the in-development version by cloning and using cargo build --release
. Note this is built and tested with Rust Stable (1.41.0 as of writing). You can also get release versions using cargo install bottom
, or manually building from the Releases page by downloading and building.
Linux
Other installation methods based on distros are as follows:
Arch Linux
You can get the release versions from the AUR by installing bottom
.
Ubuntu
TBD
Windows
You may need to install a font like FreeMono and use a terminal like cmder for font support to work properly, unfortunately. I plan to add a Chocolatey install option in the future.
macOS
macOS seems to work fine for the most part, barring minor issues with the Ctrl
-arrow key bindings (use Shift
instead). I plan to add a Homebrew install option in the future.
Usage
Run using btm
.
Command line options
-
-h
,--help
shows the help screen and exits. -
-a
,--avg_cpu
enables also showing the average CPU usage in addition to per-core CPU usage. -
-m
,--dot-marker
uses a dot marker instead of the default braille marker. -
Temperature units (you can only use one at a time):
-
-c
,--celsius
displays the temperature type in Celsius. This is the default. -
-f
,--fahrenheit
displays the temperature type in Fahrenheit. -
-k
,--kelvin
displays the temperature type in Kelvin.
-
-
-v
,--version
displays the version number and exits. -
-d
,--debug
enables debug logging. -
-r <RATE>
,--rate <RATE>
will set the refresh rate in milliseconds. Lowest it can go is 250ms, the highest it can go is 2128 - 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. -
-l
,--left_legend
will move external table legends to the left side rather than the right side. Right side is default. -
-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 pressingTab
). -
-S
,--case_sensitive
will default to matching case. -
-W
,--whole
will default to searching for the world word. -
-R
,--regex
will default to using regex.
when searching processes.
Keybindings
General
-
q
,Ctrl-c
to quit. Note if you are currently in the search widget,q
will not work so you can still type. -
Ctrl-r
to reset the screen and reset all collected data. -
f
to freeze the screen from updating with new data. Pressf
again to unfreeze. Note that monitoring will still continue in the background. -
Ctrl/Shift-Up
,Ctrl/Shift-Down
,Ctrl/Shift-Left
, andCtrl/Shift-Right
to navigate between widgets. Note that on macOS,Ctrl
-arrow keys conflicts with an existing macOS binding, useShift
-arrow key instead. -
Esc
to close a dialog window. -
?
to get a help screen explaining the controls. Note all controls exceptEsc
to close the dialog will be disabled while this is open.
Scrollable Tables
-
Up
ork
andDown
orj
scrolls through the list if the widget is a table (Temperature, Disks, Processes). -
gg
orHome
to jump to the first entry of the current table. -
G
(Shift-g
) orEnd
to jump to the last entry of the current table.
Processes
-
dd
to kill the selected process -
c
to sort by CPU usage. Sorts in descending order by default. Press again to reverse sorting order. -
m
to sort by memory usage. Sorts in descending order by default. Press again to reverse sorting order. -
p
to sort by PID. Sorts in ascending order by default. Press again to reverse sorting order. -
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. -
Ctrl-f
or/
to open the search widget.
Search Widget
-
Tab
to switch between searching for PID and name respectively. -
Alt-c
to toggle ignoring case. -
Alt-m
to toggle matching the entire word. -
Alt-r
to toggle using regex. -
Ctrl-a
andCtrl-e
to jump to the start and end of the search bar respectively. -
Esc
to close. -
Left
andRight
arrow keys to move the cursor within the search bar.
Note that q
is disabled while in the search widget.
Mouse actions
- Scrolling with the mouse will scroll through the currently selected list if the widget is a scrollable table.